package com.zzyl.common.ai;

import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.core.auth.Auth;
import com.baidubce.qianfan.model.chat.ChatResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class AIModellnvoker {
    @Autowired
    private BaiduAIProperties baiduAIProperties;

    /**
     * 调用千帆大模型
     * @param prompt 提示词
     * @return 模型返回结果
     */
    public String qianfanInvoker(String prompt) {
        /**
         * 第一个参数：认证类型，固定选择 Auth.TYPE_OAUTH
         * 第二个参数：accessKeyId，从百度云控制台创建的应用里可以找到
         * 第三个参数：accessKeySecret，从百度云控制台创建的应用里可以找到
         */
        Qianfan qianfan = new Qianfan(Auth.TYPE_IAM,
                baiduAIProperties.getAccessKey()
                , baiduAIProperties.getSecretKey());
        ChatResponse response = qianfan.chatCompletion()
                // 模型名称，要选择自己开通付费的模型
                .model(baiduAIProperties.getQianfanModel())
                // 聊天内容，可以设置多个，每个消息包含role（角色，user表示用户，assistant表示模型），content（消息内容）
                .addMessage("user", prompt)
                // 采样参数，取值范围(0,1]
                .temperature(baiduAIProperties.getTemperature())
                // 模型输出最大长度，取值范围[2, 2048]
                .maxOutputTokens(baiduAIProperties.getMaxTokens())
                // 模型输出格式，取值范围：text（文本）、json_object（JSON对象）
                .responseFormat(baiduAIProperties.getResponseFormat())
                .execute();
        String result = response.getResult();
        return result;
    }
}
